08 Para saber mais: decorator de classe

Próxima Atividade
  • Mudar o player
  • Sugerir melhoria

Em TypeScript também podemos criar decoradores de classes. Um decorador de classe nos dá acesso ao constructor da class que estamos decorando. Vejamos um exemplo:

export function meuDecoratorDeClasse() {

    return function(constructor: any) {

       // guarda o constructor original, pois iremos definir um novo
        const original = constructor;

       // cria um novo constructor. Como ele pode receber nenhum ou mais parâmetros, usamos ...args: any[]
        const novo: any = function (...args: any[]) {
            console.log("Criando uma instância com New: " + original.name); 
            // cria a instância da classe quando for chamado 
            return new original(...args);
        }

       // importante! O prototype do novo constructor deve ser o mesmo do original
        novo.prototype = original.prototype;

        // retorna o novo constructor
        return novo;
    }
}

Nosso decorator exibirá apenas uma mensagem no console indicando que chamará o constructor da classe.

// código anterior omitido

@meuDecoratorDeClasse()
export class NegociacaoController {
   // código omitido 
}

Este é outro tipo de decorator possível dentro da linguagem.

Tirar dúvida Próxima Atividade
ícone TypeScript parte 2: Mais técnicas e boas práticas

TypeScript parte 2: Mais técnicas e boas práticas

100%
Aula03 de 05

O poder dos decorators

Atividades 8 de 10

  • 01 Requisitos não funcionais 06min
  • 02 Decorator de método 11min
  • 03 Esboço de um decorator de método
  • 04 TypeScript e Decorators
  • 05 Sobre o descriptor
  • 06 Medindo o tempo de execução de métodos 08min
  • 07 Criando nosso próprio DOM Injector e Lazy loading 10min
  • 08 Para saber mais: decorator de classe
  • 09 Revisão 02min
  • 10 Consolidando seus conhecimentos

Aulas

Outros Links

Fórum Trocar Curso
Gravatar de Marcos Katsumi Kay

Marcos Katsumi Kay 34.0k xp

Logo da Alura